package edu.ustb.aur.chain;

import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author ShiZhe
 * @create 2021-11-17 10:17
 */
public interface ChainService extends IService<Chain> {

    /**
     * 插入数据
     *
     * @param chain 对象
     */
    void createChain(Chain chain);

    /**
     * 查询合约id是否存在，看执行createChain函数还是addContractTxIdList
     * @param contractId 合约唯一id
     * @return true or false
     */
    boolean findContractIdIsExist(String contractId);

    /**
     * 根据合约id查找，返回chain实体
     *
     * @param contractId 合约id
     * @return chain实体
     */
    Chain findChainById(String contractId);

    /**
     * 根据合约名返回chain对象，因为合约名不唯一，可能有多个chain对象
     *
     * @param contractName 合约名
     * @return 交易id集合的集合
     */
    List<Chain> findContractTxIdListByName(String contractName);

    /**
     * 根据合约唯一id查询交易id集合
     *
     * @param contractId 合约唯一id
     * @return 交易id集合
     */
    List<String> findContractTxIdListById(String contractId);

    /**
     * 将新交易id插入已有合约id的交易id集合中
     *
     * @param contractId 合约唯一id
     * @param contractTxId 合约新交易id
     */
    void addContractTxIdList(String contractId, String contractTxId);
}
